<!DOCTYPE html>
<html><meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>springboot抛弃tomcat</title>
<style type="text/css">
    body{
        background-color: #3C3F41;
    }
    a{
        text-decoration: none;
        color: #fbfbff;
    }
</style>
<body><head>
    <style type="text/css">
        nav ul {
            list-style-type: none;
            margin: 0;
            padding: 0;
            overflow: hidden;
            background-color: #333;
            position: -webkit-sticky;  
            position: sticky;
            top: 0;
        }

        nav li {
            float: left;
        }

        nav li a {
            display: block;
            color: white;
            text-align: center;
            padding: 14px 16px;
            text-decoration: none;
        }

         
        nav li a:hover {
            background-color: #111;
        }
        .active {
            background-color: #4CAF50;
        }
    </style>
</head>

<nav>
    <ul>
        
        
        <li><a href="/blog/">home</a></li>
         
        
        <li><a href="/blog/post">博文</a></li>
         
        
        <li><a href="/blog/about">about</a></li>
         
    </ul>
</nav>
<div id="content" style="margin: auto;width: 50%;padding: 10px; color: #ffffff;height: 100%">
    <article>
        <header>
            <h1 class="post-title">springboot抛弃tomcat</h1>
        </header>
        <p>操作系统中的几种I/O控制方式</p>
<p>目录</p>
<p>一、导读</p>
<p>二、I/O控制方式</p>
<p>1、直接程序控制方式</p>
<p>2、中断驱动控制方式</p>
<p>3.直接存储器访问控制方式</p>
<p>4、通道控制方式</p>
<p>三、参考文献</p>
<p> </p>
<p>一、导读
为了有效地实现物理I/O操作，必须通过硬件和软件技术，对 CPU 和 I/O 设备的职能进行合理的分工，以调节系统性能和硬件成本之间的矛盾。</p>
<p>随着计算机技术的发展，I/O 控制方式也在不断发展。选择和衡量 I/O 控制方式有如下三条原则：</p>
<p>（1） 数据传送速度足够快，能满足用户的需求但又不丢失数据；</p>
<p>（2） 系统开销小，所需的处理控制程序少</p>
<p>（3） 能充分发挥硬件资源的能力，使 I/O 设备尽可能忙，而 CPU 等待时间尽可能少。</p>
<p>按照I/O控制器功能的强弱以及和 CPU 之间联系方式的不同，可以把 I/O 设备的控制方式和通道控制方式分为四类：直接程序控制方式、中断驱动控制方式、直接存储器访问（DMA）控制方式和通道控制方式。I/O控制方式发展的目标是尽量减少CPU对 I/O 控制的干预，把CPU从繁杂的 I/O 控制事务中解脱出来，以便更多地进行数据处理，提高计算机效率和资源的利用率。它们之间的主要差别在于 CPU 与外围设备并行工作的方式和程度不同。</p>
<p>二、I/O控制方式
1、直接程序控制方式
直接程序控制方式由用户进程直接控制主存或 CPU 和外围设备之间的信息传送。直接程序控制方式又称为询问方式，或忙/等待方式。通过 I/O 指令或询问指令测试 I/O 设备的忙/闲标志位，决定主存与外围设备之间是否交换一个字符或一个字。</p>
<p>直接程序控制方式流程图
流程图概述直接程序控制方式的工作流程如下：</p>
<p>① 当用户进程需要输入数据时，通过 CPU 向控制器发出一条 I/O 指令，启动设备输入数据，同时把状态寄存器中的忙/闲状态 busy 置为1</p>
<p>② 用户进程进入测试等待状态，在等待过程中，CPU 不断地用一条测试指令检查外围设备状态寄存器中的 busy 位，而外围设备只有在数据传入控制器的数据寄存器之后，才将该 busy 位置为0,。</p>
<p>③ 处理器将数据寄存器中的数据取出，送入主存指定单元，完成一个字符的I/O操作，接着进行下一个数据的 I/O 操作</p>
<p>直接程序控制方式虽然简单，不需要多少硬件的支持，但由于高速的 CPU 和低速的 I/O 设备之间的速度上不匹配，因此，CPU 与外围设备只能串行工作，使 CPU 的绝大部分时间都处于等待是否完成 I/O 操作的循环测试中，造成 CPU 的极大浪费，外围设备也不能得到合理的使用，整个系统的效率很低。因此，这种I/O控制方式只适合于 CPU 执行速度较慢，且外围设备较少的系统。</p>
<p>2、中断驱动控制方式
为了减少程序直接控制方式下 CPU 的等待时间以及提高系统的并行程度，系统引入了中断机制。中断机制引入后，外围设备仅当操作正常结束或异常结束时才向 CPU 发出中断请求。在 I/O 设备输入每个数据的过程中，由于无需 CPU 的干预，一定程度上实现了 CPU 与 I/O设备的并行工作。仅当输入或输出完一个数据时，才需 CPU 花费极短的时间做中断处理。</p>
<p>中断驱动方式流程图
存在的问题：由于I/O操作直接由 CPU 控制，每传送一个字符或一个字，都要发生一次中断，仍然占用了大量的 CPU 处理时间，因此可以通过为外围设备增加缓冲寄存器存放数据来减少中断次数。</p>
<p>上述两种方法的特点都是以 CPU 为中心，数据传送通过一段程序来实现，软件的传送手段限制了数据传送的速度。接下来介绍的这两种I/O 控制方式采用硬件的方法来显示 I/O 的控制</p>
<p>3.直接存储器访问控制方式
直接存储器访问控制方式又称 DMA（Direct Memory Access）方式。为了进一步减少 CPU 对 I/O 操作的干预，防止因并行操作设备过多使 CPU 来不及处理或因速度不匹配而造成的数据丢失现象，引入了 DMA 控制方式。在 DMA 控制器的控制下，采用窃取或挪用总线控制权，在设备和主存之间开辟直接数据交换通道，成批地交换数据，而不必让 CPU 干预。</p>
<p>DMA方式的特点：</p>
<p>① 数据传送以数据块为基本单位</p>
<p>② 所传送的数据从设备直接送入主存，或者从主存直接输出到设备上</p>
<p>③ 仅在传送一个或多个数据块的开始和结束时才需 CPU 的干预，而整块数据的传送则是在控制器的控制下完成。</p>
<p>DMA方式和中断驱动控制方式相比，减少了 CPU 对 I/O 操作的干预，进一步提高了 CPU 与 I/O 设备的并行操作程度。</p>
<p>DMA方式的线路简单、价格低廉，适合高速设备与主存之间的成批数据传送，小型、微型机中的快速设备均采用这种方式，但其功能较差，不能满足复杂的 I/O 要求。</p>
<p>4、通道控制方式
通道，独立于 CPU 的专门负责输入输出控制的处理机，它控制设备与内存直接进行数据交换。有自己的通道指令，这些指令由 CPU 启动，并在操作结束时向 CPU 发出中断信号。</p>
<p>直接程序控制方式和中断程序控制方式适合于低速设备的数据传送，而 DMA 方式虽然适合于高速设备的数据传送，但一个 DMA 控制器只能控制少量的同类设备，这远远不能满足大型计算机系统的需要。通常，一个大型计算机需要连接大量的高速和低速设备，通道控制方式可以满足这个要求。（DMA和通道控制方式的主要区别——能否满足大型计算机系统的既能处理高速设备又能处理低速设备的需要）</p>
<p>通道控制方式，实现了CPU、通道和I/O设备三者的并行操作，从而更加有效地提高整个系统的资源利用率。例如，当 CPU 要完成一组相关的读（或写）操作时，只需要向 I/O 通道发出一条 I/O 指令，指出其所要执行的通道程序的首址和要访问的I/O设备，通道接收到该指令后，通过执行通道程序便可完成 CPU 指定的 I/O 任务。可见，通道只是在 I/O 操作的起始和结束时向 CPU 发出 I/O 中断申请，相对于之前的控制方式进一步减少了 CPU 的干预程度。</p>
<p>————————————————
版权声明：本文为CSDN博主「Jovan_初学者」的原创文章，遵循 CC 4.0 BY-SA 版权协议，转载请附上原文出处链接及本声明。
原文链接：https://blog.csdn.net/yingshuanglu2564/article/details/82881770</p>

        <br />

        <div>
            
            <a href="https://alittlesmile.gitee.io/blog/post/springboot/springboot%E6%8A%9B%E5%BC%83tomcat/">&lt; springboot抛弃tomcat</a>
            

            
            <a href="https://alittlesmile.gitee.io/blog/post/springboot/springboot-jpa/" style="float:right">SpringBoot Jpa ></a>
            
        </div>
    </article>

</div></body>
</html>
